#include<bits/stdc++.h>
#define N 1000005
using namespace std;
int T;
int n;
int a[N],b[N<<1];
int p[N];
int fa[N];
bool zzz;
vector<int> f[N];
int Find(int x){
	return (x==fa[x])?x:fa[x]=Find(fa[x]);
}
inline bool check(int x,int y){
	for(int i:f[x]) if(p[Find(i)]==y) return 0;
	return 1;
}
void dfs(int x){
	if(x==n){
		for(int i=1;i<n;i++){
			bool z=0;
			for(int j=0;a[i-1]+j<n&&a[i]+j<n;j++){
				if(p[Find(a[i-1]+j)]<p[Find(a[i]+j)]){z=1;break;}
				if(p[Find(a[i-1]+j)]>p[Find(a[i]+j)]) return;
			}
			if(z||a[i]<a[i-1]) continue;
			return;
		}
		for(int i=0;i<n;i++){
			char c='a'-1+p[Find(i)];
			cout<<c;
		}
		printf("\n");
		zzz=1;
		return;
	}
	if(p[Find(x)]){
		dfs(x+1);
		return;
	}
	bool vis[10];
	for(int i=0;i<=n;i++) vis[i]=0;
	for(int i:f[x]) vis[p[Find(i)]]=1;
	for(int i=1;i<=n;i++){
		if(vis[i]) continue;
		p[Find(x)]=i;
		dfs(x+1);
		p[Find(x)]=0;
		if(zzz) return;
	}
}
inline void sol(){
	for(int i=0;i<n;i++) f[i].clear();
	scanf("%d",&n);
	for(int i=0;i<n;i++) scanf("%d",&a[i]);
	for(int i=1;i<(n<<1);i++) scanf("%d",&b[i]);
	for(int i=0;i<n;i++) fa[i]=i,p[i]=0;
	for(int i=1;i<(n<<1);i++){
		if(i/2<b[i]/2){printf("-1\n");return;}
		int l=i/2,r=i/2;
		if(!(i&1)) r--;
		for(int j=1;j<=b[i]/2;j++){
			l--;r++;
			fa[Find(l)]=Find(r); 
		}
		l--;r++;
		if(l>=0&&r<n) f[l].push_back(r),f[r].push_back(l);
	}
	for(int i=0;i<n;i++){
		for(int j:f[i]) if(Find(j)==Find(i)){printf("-1\n");return;}
	}
	if(n<=8){zzz=0;dfs(0);if(!zzz) printf("-1\n");return;}
	bool s=0;
	for(int i=0;i<n;i++) if(a[i]!=n-i-1) s=1;
	if(!s){
		p[Find(a[0])]=1;
		for(int i=1;i<n;i++){
			if(p[Find(a[i])]&&p[Find(a[i])<p[Find(a[i-1])]]){printf("-1\n");return;}
			if(p[Find(a[i])]) continue;
			if(!check(a[i],p[Find(a[i-1])])) p[Find(a[i])]=p[Find(a[i-1])]+1;
			else p[Find(a[i])]=p[Find(a[i-1])];
			if(p[Find(a[i])]>26){printf("-1\n");return;}
		}
		for(int i=0;i<n;i++){
			char c='a'-1+p[Find(i)];
			cout<<c;
		}
		printf("\n");
		return;
	}
	printf("-1\n");
} 
signed main(){
	freopen("string.in","r",stdin);
	freopen("string.out","w",stdout);
	scanf("%d",&T);
	while(T--) sol();
	return 0;
} 
